#!/usr/bin/python3.9
# -*- coding: utf-8 -*-
# @Time    : 2021/9/20 19:23
# @Author  : YHSimon
import numpy as np
from scipy import optimize as op

# 1， 定义决策变量 给出变量取值范围
x1 = (0, None)
x2 = (0, None)
x3 = (0, None)

"""
  2. 将问题化为标准形式
    编程时默认为最小化目标函数，因此这里改为 ；
    第二个约束为大于等于约束，这里化为小于等于约束；
"""
# 3. 定义目标函数系数和约束条件系数
c = np.array([-2, -3, 5])  # 目标函数系数，3*1列向量

A_ub = np.array([[-2, 5, -1], [1, 3, 1]])  # 不等式约束函数A,  3*2矩阵（2*3维列向量）
B_ub = np.array([-10, 12])  # 不等式约束系数b, 2x1维列向量
A_eq = np.array([[1, 1, 1]])  # 等式约束系数Aeq,3*1维列向量
B_eq = np.array([7])  # 等式约束系数beq,1*1数值

# 4. 求解
res = op.linprog(c, A_ub, B_ub, A_eq, B_eq, bounds=(x1, x2, x3))  # 调用函数进行求解
print(res)
